Improvements in networking infrastructure have significantly increased the power and reach of computing devices, such as smartphones, tablets, laptops and desktop systems. Applications on these computing devices are presently able to communicate through different networks, such as WiFi networks, cellular data networks, and Ethernet networks, to interact with remote computer systems that provide a wide variety of services. For example, network connectively enables a typical laptop user to: check the local weather; make an online purchase; verify a bank account balance; or remote login to a computer system at work.
However, this increased connectivity also increases the likelihood that sensitive data will be compromised. To reduce the risk of such data integrity problems, it advantageous to be able to control on how data is routed through various networks. For example, it is desirable to ensure that communications with a computer system at work are routed through a secure virtual private network (VPN). In another example, it is desirable for a computing system containing sensitive information (such as credit card numbers) to only allow specific applications on the computer system access external networks. Moreover, note that different organizations may want to enforce different policies regarding how data is routed, so it is desirable to provide a system that facilitates using different routing policies for applications belonging to different organizations.
Hence, what is needed is a system that facilitates controlling how data is routed through networks for different applications.